package io;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * JAVA IO JAVA标准的输入与输出
 *
 * 输入与输出的参照方向是我们的程序:
 * 输入:从外界到程序的方向，是用来读取数据的
 * 输出:从程序到外界的方向，是用来写出数据的
 *
 * java用"流"来形容读写，我们可以理解为流是真实链接程序与另一端的"管道"，并且可以顺着这个管道
 * 向同一方向顺序流动"字节".
 * 其中
 * 输入流:用来读取数据。
 * 输出流:用来写出数据。
 *
 * java定义了两个超类:java.io.InputStream和OutputStream
 * InputStream(字节输入流):是所有字节输入流的超类，规定了读取字节的相关操作。所有实际读取字节的
 *                       流都继承自它
 * OutputStream(字节输出流):是所有字节输出流的超类，用于写出字节。
 *
 * 将来读写不同设备会有不同的输入与输出流，但是读写操作都是一样的。
 * 例如:文件流java.io.FileInputStream和FileOutputStream
 * 文件流是实际链接程序与文件的"管道"，用于读写文件的流。
 */
public class FOSDemo {
    public static void main(String[] args) throws IOException {
        //向文件fos.dat中写入数据
//        File file = new File("./fos.dat");
//        FileOutputStream fos = new FileOutputStream(file);

        FileOutputStream fos = new FileOutputStream("./fos.dat");
        /*()里可以写入字符串""或file:它可以表示一个文件并可以自己创建文件夹*/
        /*
            void write(int d)
            向文件中写入1个字节，写入的是给定的int值对应得2进制的"低八位"
                                       vvvvvvvv
            00000000 00000000 00000000 00000001

            fos.write(1)完后文件fos.dat内容:
            00000001
         */
        /** write() 写入 */
        fos.write(1);
        /*                             vvvvvvvv
            00000000 00000000 00000000 00000010

            fos.write(2)完后文件fos.dat内容:
            00000001 00000010
         */
        fos.write(2);
        System.out.println("写出完毕！");
        fos.close();
    }
}
